//APP_PASSWORD变量到系统环境中查找
//引用express框架
const express = require('express');
//导入express-session模块
const session = require('express-session');
//处理路径
const path = require('path');
//引入body-parser模块，用来处理post请求参数
const bodyParser = require('body-parser');
//导入模板引擎
const template = require('art-template');
//导入dateformat第三方模块
const dateFormat = require('dateformat');
//导入morgan这个第三方模块
const morgan = require('morgan');
//导入config模块
const config = require('config');
//创建网站服务器
const app = express();
//数据库连接
require('./model/connect');
//处理post请求参数
app.use(bodyParser.urlencoded({extended:false}));
//配置session
app.use(session({
    secret:'secret key',
    //用户没有登录时，服务不设置cookie
    saveUninitialized:false,
    cookie:{
        maxAge:24*60*60*1000
    }
}));
//告诉express框架模板的所在位置
app.set('views',path.join(__dirname,'views'));
//告诉express框架模板的默认后缀是什么
app.set('view engine','art');
//当渲染后缀为art的模板时，所使用的模板引擎是什么
app.engine('art',require('express-art-template'));
//向模板内部导入dateFormate变量
template.defaults.imports.dateFormat = dateFormat;
//开放静态资源文件
app.use(express.static(path.join(__dirname,'public')));
//获取系统环境变量，返回值是对象
if(process.env.NODE_ENV == 'development')
{
    //当前是开发环境
    console.log('当前是开发环境');
    app.use(morgan('dev'));
}else{
    //当前是生产环境
    console.log('当前是生产环境')
}

//拦截请求，判断用户登录状态
app.use('/admin',require('./middleware/loginGuard'));
const home = require('./route/home.js');
const admin = require('./route/admin.js');

app.use('/home',home);
app.use('/admin',admin);

app.use((err,req,res,next)=>{
    //将字符串对象转换为对象类型
    //JSON.parse();
    const result = JSON.parse(err);
    let params = [];
    for(let attr in result)
    {
        if(attr != 'path'){
            params.push(attr + '=' + result[attr]);
        }
    }
    res.redirect(`${result.path}?${params.join('&')}`);
})
//监听端口
app.listen(80);
console.log('网站服务器启动成功\n访问主页：localhost/home\n访问后台管理请访问：localhost/admin/login');